/*
 * File:   templib.h
 * Author: aple
 */

#ifndef PT100_LIB_H_
#define	PT100_LIB_H_

#include "templib.h"

/* 计算顺序
 * 1、pt to temp
 * 2、CF
 * 3、coef
 * 4、correct  //修正表为coef规格化后的单位一致
 * 5、limite-err
 * 6、flt
 */

typedef struct
{
    float Res; //电阻值
    int32_t AdVal; //AD值
} temp_sample_type;

typedef struct
{
    uint8_t Err;    //仅TEMP_ERR_LIMITE_L_MASK 和 TEMP_ERR_LIMITE_H_MASK
    uint8_t sample_nums; //采样点数量
    uint8_t bCFEn;
    int32_t AdcVal;
    //修正
    int16_t Pb;
    int16_t Pk;
    //范围
    float TempLimiteL; //测温下限
    float TempLimiteH; //测温上限
    //输出
    float Flt;
    float TempOrg;   //未修正的原始数据
    float TempReal;   //
    float TempCtr;    //
    float TempDisp;   //
    
    float coef;       //输出值的系数 //修正值，上下限单位必须和coef后的数据一致。
    
    //整数化 二舍八入
    int16_t iTempCtr;
    int16_t iTempDisp;
    int16_t iTempOrg;
    
    //采样点
    temp_sample_type Sample[4];   //采样点，实际电阻和温度
    
    //修正模式
    uint8_t correct_point_len;
    temp_correct_mode_type correct_mode;
    void * correct_list;

} pt100_type;

float pt100_cal(pt100_type *pt);

/*------------------------------------------------*
* 仅用pbpk修正
*------------------------------------------------*/
float pt100_cal_pbpk(pt100_type *pt);

/*------------------------------------------------*
* 仅用imap修正
*------------------------------------------------*/
float pt100_cal_imap(pt100_type *pt);


#endif	/* TEMPLIB_H_ */

